import { defineStore } from 'pinia';
// import * as api from '@/api/signPosition'; // 稍后将引入API

/**
 * @description 签署位数据管理组件，处理状态和数据流
 */
export const useSignStore = defineStore('sign', {
  state: () => ({
    /**
     * @type {Map<string, Array<any>>}
     * @description 普通签章位置集合, key为文件ID
     */
    imageMaps: new Map(),
    /**
     * @type {Map<string, Array<any>>}
     * @description 骑缝章位置集合, key为文件ID
     */
    pagingSealInfos: new Map(),
    /**
     * @type {object | null}
     * @description 当前文件信息
     */
    currentFile: null,
    /**
     * @type {Array<any>}
     * @description 签署主体列表
     */
    signSubjects: [
      { id: 1, name: '张三' },
      { id: 2, name: '李四' },
    ],
    /**
     * @type {Array<any>}
     * @description 普通签章位置集合
     */
    signs: [],
    /**
     * @type {boolean}
     * @description 加载状态
     */
    loading: false,
  }),

  getters: {
    /**
     * 获取当前文件的签署位
     * @param {object} state
     * @returns {Array<any>}
     */
    currentSignPositions: (state) => {
      if (!state.currentFile) return [];
      return state.imageMaps.get(state.currentFile.fileId) || [];
    },
    /**
     * 获取所有签章
     * @param {object} state
     * @returns {Array<any>}
     */
    allSigns: (state) => state.signs,
  },

  actions: {
    /**
     * 设置当前文件
     * @param {object} file - 文件信息
     */
    setCurrentFile(file) {
      this.currentFile = file;
      // 如果没有缓存，则可以触发加载
      if (!this.imageMaps.has(file.fileId)) {
        // this.loadSignPositions(file.fileId);
      }
    },

    /**
     * 加载指定文件的签署位信息
     * @param {string} fileId - 文件ID
     */
    async loadSignPositions(fileId) {
      // this.loading = true;
      // try {
      //   const res = await api.querySiteInfo({ fileId });
      //   if (res.code === 0) {
      //     this.imageMaps.set(fileId, res.data.siteInfos || []);
      //     this.pagingSealInfos.set(fileId, res.data.pagingSealInfos || []);
      //   }
      // } finally {
      //   this.loading = false;
      // }
    },

    /**
     * 保存签署位
     * @param {object} data - 签署位数据
     */
    async saveSignPositions(data) {
      // this.loading = true;
      // try {
      //   await api.saveSiteInfo(data);
      // } finally {
      //   this.loading = false;
      // }
    },
    /**
     * 添加一个新签章
     * @param {object} sign
     */
    addSign(sign) {
      this.signs.push(sign);
    },

    /**
     * 更新签章位置
     * @param {object} updatedSign
     */
    updateSign(updatedSign) {
      const index = this.signs.findIndex(s => s.id === updatedSign.id);
      if (index !== -1) {
        this.signs[index] = { ...this.signs[index], ...updatedSign };
      }
    },

    /**
     * 删除一个签章
     * @param {number} signId
     */
    deleteSign(signId) {
      this.signs = this.signs.filter(s => s.id !== signId);
    },

    /**
     * 加载签署主体
     */
    async loadSignSubjects() {
      // this.loading = true;
      // try {
      //   const res = await api.querySiteInfo({ fileId });
      //   if (res.code === 0) {
      //     this.imageMaps.set(fileId, res.data.siteInfos || []);
      //     this.pagingSealInfos.set(fileId, res.data.pagingSealInfos || []);
      //   }
      // } finally {
      //   this.loading = false;
      // }
    },
  },
});